1. Field of the Invention
The present invention relates generally to the field of parallel processing and, more specifically, to support for non-local returns in a parallel thread single-instruction-multiple-data engine.
2. Description of the Related Art
To increase performance, graphics processors typically implement processing techniques such as pipelining that attempt to process, in parallel, as much data as possible throughout the different parts of the pipeline. Parallel graphics processors with single instruction, multiple thread (SIMT) architectures are designed to maximize the amount of parallel processing in the graphics pipeline. In a SIMT architecture, groups of parallel threads attempt to execute program instructions synchronously together as often as possible to increase processing efficiency.
In typical SIMT architectures, there is no support for performing non-local returns. Non-local returns allow threads executing a sequence of instructions to jump to a different sequence of instructions. Such scenarios may occur during exception handling such as during a C++ try/catch/finally block. The lack of support for performing non-local returns reduces the functionality and flexibility available to the programmer when programming code sequences to be executed on a processor that implements a SIMT architecture.
Accordingly, what is needed in the art is a mechanism that allows non-local returns to be executed in a SIMT environment.